<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="stream-writer-objects.html" />
<link rel="prev" href="incremental-encoder-objects.html" />
<link rel="parent" href="codec-base-classes.html" />
<link rel="next" href="stream-writer-objects.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>4.8.1.3 IncrementalDecoder Objects </title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.8.1.2 incrementalencoder Objects"
  href="incremental-encoder-objects.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="4.8.1 codec Base Classes"
  href="codec-base-classes.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="4.8.1.4 streamwriter Objects"
  href="stream-writer-objects.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="incremental-encoder-objects.html">4.8.1.2 IncrementalEncoder Objects</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="codec-base-classes.html">4.8.1 Codec Base Classes</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="stream-writer-objects.html">4.8.1.4 StreamWriter Objects</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h3><a name="SECTION006813000000000000000"></a><a name="incremental-decoder-objects"></a>
<br>
4.8.1.3 IncrementalDecoder Objects 
</h3>

<p>
The <tt class="class">IncrementalDecoder</tt> class is used for decoding an input in multiple
steps. It defines the following methods which every incremental decoder must
define in order to be compatible with the Python codec registry.

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><span class="typelabel">class</span>&nbsp;<tt id='l2h-542' xml:id='l2h-542' class="class">IncrementalDecoder</tt></b>(</nobr></td>
  <td><var></var><big>[</big><var>errors</var><big>]</big><var></var>)</td></tr></table></dt>
<dd>
  Constructor for an <tt class="class">IncrementalDecoder</tt> instance.

<p>
All incremental decoders must provide this constructor interface. They are
  free to add additional keyword arguments, but only the ones defined
  here are used by the Python codec registry.

<p>
The <tt class="class">IncrementalDecoder</tt> may implement different error handling
  schemes by providing the <var>errors</var> keyword argument. These
  parameters are predefined:

<p>

<ul>
<li><code>'strict'</code> Raise <tt class="exception">ValueError</tt> (or a subclass);
                          this is the default.
</li>
<li><code>'ignore'</code> Ignore the character and continue with the next.
</li>
<li><code>'replace'</code> Replace with a suitable replacement character.
  
</li>
</ul>

<p>
The <var>errors</var> argument will be assigned to an attribute of the
  same name. Assigning to this attribute makes it possible to switch
  between different error handling strategies during the lifetime
  of the <tt class="class">IncrementalEncoder</tt> object.

<p>
The set of allowed values for the <var>errors</var> argument can
  be extended with <tt class="function">register_error()</tt>.
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-543' xml:id='l2h-543' class="method">decode</tt></b>(</nobr></td>
  <td><var>object</var><big>[</big><var>, final</var><big>]</big><var></var>)</td></tr></table></dt>
<dd>
  Decodes <var>object</var> (taking the current state of the decoder into account)
  and returns the resulting decoded object. If this is the last call to
  <tt class="method">decode</tt> <var>final</var> must be true (the default is false).
  If <var>final</var> is true the decoder must decode the input completely and must
  flush all buffers. If this isn't possible (e.g. because of incomplete byte
  sequences at the end of the input) it must initiate error handling just like
  in the stateless case (which might raise an exception).
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-544' xml:id='l2h-544' class="method">reset</tt></b>(</nobr></td>
  <td><var></var>)</td></tr></table></dt>
<dd>
  Reset the decoder to the initial state.
</dl>

<p>
The <tt class="class">StreamWriter</tt> and <tt class="class">StreamReader</tt> classes provide
generic working interfaces which can be used to implement new
encoding submodules very easily. See <tt class="module">encodings.utf_8</tt> for an
example of how this is done.

<p>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="4.8.1.2 incrementalencoder Objects"
  href="incremental-encoder-objects.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="4.8.1 codec Base Classes"
  href="codec-base-classes.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="4.8.1.4 streamwriter Objects"
  href="stream-writer-objects.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="incremental-encoder-objects.html">4.8.1.2 IncrementalEncoder Objects</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="codec-base-classes.html">4.8.1 Codec Base Classes</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="stream-writer-objects.html">4.8.1.4 StreamWriter Objects</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
